don't simply crash if any of the pointer args are NULL. Instead,
authorMichael Natterer <mitch@imendio.com>
Sat, 15 Sep 2007 16:48:56 +0000 (16:48 +0000)
committerMichael Natterer <mitch@src.gnome.org>
Sat, 15 Sep 2007 16:48:56 +0000 (16:48 +0000)
2007-09-15  Michael Natterer  <mitch@imendio.com>

* gtk/gtkselection.c (gtk_target_list_find): don't simply crash if
any of the pointer args are NULL. Instead, g_return_if_fail() on
"list != NULL" and allow to pass NULL as return location for "info".

svn path=/trunk/; revision=18831

ChangeLog
gtk/gtkselection.c

index ebf44f8a84fb40ec72224a12570bb7c251b57567..e83dcd2be49158c6c146eef69a5683acdae0a856 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-09-15  Michael Natterer  <mitch@imendio.com>
+
+       * gtk/gtkselection.c (gtk_target_list_find): don't simply crash if
+       any of the pointer args are NULL. Instead, g_return_if_fail() on
+       "list != NULL" and allow to pass NULL as return location for "info".
+
 2007-09-14  Emmanuele Bassi  <ebassi@gnome.org>
 
        * gtk/gtkrecentaction.c:
index 16eb1c802d9ae289805651b083607669b9923fef..5100cd9aa02dbc521cbf82aae100a559dfe03b0a 100644 (file)
@@ -530,10 +530,11 @@ gtk_target_list_remove (GtkTargetList *list,
  * gtk_target_list_find:
  * @list: a #GtkTargetList
  * @target: an interned atom representing the target to search for
- * @info: a pointer to the location to store application info for target
- * 
+ * @info: a pointer to the location to store application info for target,
+ *        or %NULL
+ *
  * Looks up a given target in a #GtkTargetList.
- * 
+ *
  * Return value: %TRUE if the target was found, otherwise %FALSE
  **/
 gboolean
@@ -541,16 +542,23 @@ gtk_target_list_find (GtkTargetList *list,
                      GdkAtom        target,
                      guint         *info)
 {
-  GList *tmp_list = list->list;
+  GList *tmp_list;
+
+  g_return_if_fail (list != NULL);
+
+  tmp_list = list->list;
   while (tmp_list)
     {
       GtkTargetPair *pair = tmp_list->data;
 
       if (pair->target == target)
        {
-         *info = pair->info;
+          if (info)
+            *info = pair->info;
+
          return TRUE;
        }
+
       tmp_list = tmp_list->next;
     }